# -*- coding: utf-8 -*-
# @Time    : 2024/6/24 14:39
# @Author  : floraachy
# @File    : repo_issue_page.py
# @Software: PyCharm
# @Desc:

# 标准库导入
# 第三方库导入
import allure
# 本地应用/模块导入
from utils.base_utils.base_page import BasePage


class RepoIssuePage(BasePage):
    """项目-疑修列表页面"""
    # 疑修 导航栏
    locator_issue_nav = "//span[text()='疑修(Issue)']"
    # 创建疑修 按钮
    locator_new_issue_btn = "//a[text()='创建疑修']"
    # 疑修列表 所有疑修标题定位
    locator_issues_title_a = "//div[@class='idetails']//a"
    # 疑修列表 具体某个疑修的标题
    locator_issue_title_a = "//div[@class= 'listdatas']//a[contains(text(), '{}')]"
    # 疑修关键字搜索框
    locator_search_keyword_input = "//input[@placeholder='输入关键字搜索疑修']"
    # 搜索图标
    locator_search_icon = "//i[contains(@class, 'search')]"

    @allure.step("访问疑修列表页面：/{repo_owner}/{repo_identifier}/issues")
    def navigate(self, repo_owner, repo_identifier):
        """
        访问疑修列表页面
        """
        self.visit(f"/{repo_owner}/{repo_identifier}/issues")

    @allure.step("点击【疑修(Issue)】导航栏")
    def click_issue_nav(self):
        """
        点击 疑修(Issue) 导航栏
        """
        self.click(locator=self.locator_issue_nav)

    @allure.step("点击【创建疑修】按钮")
    def click_new_issue_button(self):
        """
        点击'创建疑修'按钮
        """
        self.click(locator=self.locator_new_issue_btn)
        self.page.wait_for_load_state()

    @allure.step("在搜索框中，输入疑修关键字: {text}，点击搜索图标，搜索疑修")
    def search_issue_by_keyword(self, text):
        """
        在搜索框中，输入疑修关键字，点击搜索图标，搜索疑修
        """
        self.input(locator=self.locator_search_keyword_input, text=text)
        self.page.wait_for_timeout(1000)
        self.click(self.locator_search_icon)
        self.page.wait_for_timeout(3000)

    @allure.step("获取当前页所有的疑修标题")
    def get_current_page_issue_title(self):
        """
        获取当前页所有的疑修标题
        """
        return self.get_all_elements_text(self.locator_issues_title_a)

    @allure.step("在疑修列表点击疑修标题：{title}")
    def click_issue_title_on_list(self, title):
        """
        在疑修列表点击疑修标题
        """
        self.click(self.locator_issue_title_a.format(title))
        self.page.wait_for_timeout(3000)
